package com.wmx.jdbc_template_app.easypoi;

import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult;
import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler;
import cn.hutool.core.util.StrUtil;
import org.springframework.stereotype.Component;

/**
 * 用户信息导入数据校验
 * 1、通用的校验满足不了所有的校验，例如还需要通过查询数据库，校验数据的唯一性，此时需要自定义一个校验规则，实现IExcelVerifyHandler接口。
 * 2、这种方式如果是查库，则仍然有缺陷，因为它是一条一条数据进行处理的，显然循环查库并不是一个好主意。
 *
 * @author wangMaoXiong
 * @version 1.0
 * @date 2024/5/19 9:20
 */
@Component
public class User2VerifyHandler implements IExcelVerifyHandler<User2VO> {

    @Override
    public ExcelVerifyHandlerResult verifyHandler(User2VO vo) {
        ExcelVerifyHandlerResult result = new ExcelVerifyHandlerResult();
        // 假设是添加用户，现在去数据库查询realName，如果存在则表示校验不通过。
        User2VO user = getOne(vo.getRealName());
        if (user != null) {
            result.setMsg("唯一校验失败");
            result.setSuccess(false);
            return result;
        }
        result.setSuccess(true);
        return result;
    }

    /**
     * 查询数据库用户名是否已经存在
     *
     * @param realName ：用户名
     * @return
     */
    private User2VO getOne(String realName) {
        return StrUtil.equals("admin", realName) ? new User2VO() : null;
    }
}